package laboratorioV.grupo21.tp4.ejercicios;

import laboratorioV.grupo21.tp4.IO.LeerLinea;
import laboratorioV.grupo21.tp4.clientes.Cliente;
import laboratorioV.grupo21.tp4.clientes.ClientesFromDB;
import laboratorioV.grupo21.tp4.deposito.Deposito;
import laboratorioV.grupo21.tp4.productos.Producto;
import laboratorioV.grupo21.tp4.productos.ProductosFromDB;

public class Punto0 implements Iejercicios {
	public void iniciar(Deposito pDeposito) throws Exception{
		Cliente clienteAux;
		Producto productoAux;
		
		String opcionCliente = "";
		String opcionProducto = "";
		String opcionCantidad = "";
		Integer cantidadRestante;
		LeerLinea linea = new LeerLinea();
		
		
		System.out.println("*********************************************************");
		System.out.println("*       CARGAR STOCK PARA UN PRODUCTO DE UN CLIENTE     *");
		System.out.println("*********************************************************");
		
		opcionCliente = linea.leerCliente();
		clienteAux = new ClientesFromDB().getById(opcionCliente);
		if(clienteAux == null){			
			System.out.println("Cliente Inexistente");
			return;
		}		
		opcionProducto = linea.leerProducto();
		productoAux = new ProductosFromDB().getById(opcionProducto);
		if(productoAux == null){
			System.out.println("Producto Inexistente");
			return;
		}	
		
		opcionCantidad = linea.leer("\nCUANTO DESEA SUMARLE AL STOCK ACTUAL?:");
		
		try{
			cantidadRestante = Integer.parseInt(opcionCantidad);
		}
		catch (NumberFormatException e){
			throw new Exception("El dato ingresado no es de tipo numerico");
		}
		
		
		/*
		 * RECORRE TODO EL DEPOSITO, Y AGREGA EL STOCK QUE PUEDA(SEGUN LA CANTIDAD DE ESPACIOS LIBRES)
		 * EN CADA COMPARTIMENTO.
		 * RETORNA LA CANTIDAD DE PRODUCTOS QUE NO SE PUDO AGREGAR.
		 */
		cantidadRestante = pDeposito.addStock(clienteAux, productoAux, cantidadRestante);
		
		//SI QUEDO STOCK SIN GUARDAR, CREA UN NUEVO COMPARTIMENTO PARA ESE PRODUCTO
		if(cantidadRestante > 0)
			cantidadRestante = pDeposito.nuevoCompartimento(clienteAux, productoAux, cantidadRestante);
		
		if(cantidadRestante > 0)
				System.out.println(cantidadRestante + " productos no se pudieron almacenar al stock!!!!");		
		
	}
}
